package ve.usb.ddp.hibernate;

import ve.usb.cohesion.runtime.LocalDate;

import ve.usb.cohesion.runtime.LocalDate;

import java.util.HashSet;
import java.util.Set;


public class Pas implements java.io.Serializable, ve.usb.cohesion.runtime.Auditable {

    /** Creates a new instance of Pas */
    public Pas() {}
    
    /**
     * Holds value of property id.
     */
    private Long id;

    /**
     * Getter for property id.
     * @return Value of property id.
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Holds value of property idPas.
     */
    private long idPas;

    /**
     * Getter for property idPas.
     * @return Value of property idPas.
     */
    public long getIdPas() {
        return this.idPas;
    }

    /**
     * Setter for property idPas.
     * @param idPas New value of property idPas.
     */
    public void setIdPas(long idPas) {
        this.id = this.idPas = idPas;
    }
    /**
     * Holds value of property fecha_inicio.
     */
    private java.util.Date fecha_inicio;

    /**
     * Getter for property fecha_inicio.
     * @return Value of property fecha_inicio.
     */
    public java.util.Date getFecha_inicio() {
        return this.fecha_inicio;
    }

    /**
     * Setter for property fecha_inicio.
     * @param fecha_inicio New value of property fecha_inicio.
     */
    public void setFecha_inicio(java.util.Date fecha_inicio) {
        if (fecha_inicio==null || fecha_inicio instanceof LocalDate) 
            this.fecha_inicio = fecha_inicio;
        else this.fecha_inicio = new LocalDate(fecha_inicio);
    }
    /**
     * Holds value of property fecha_finalizacion.
     */
    private java.util.Date fecha_finalizacion;

    /**
     * Getter for property fecha_finalizacion.
     * @return Value of property fecha_finalizacion.
     */
    public java.util.Date getFecha_finalizacion() {
        return this.fecha_finalizacion;
    }

    /**
     * Setter for property fecha_finalizacion.
     * @param fecha_finalizacion New value of property fecha_finalizacion.
     */
    public void setFecha_finalizacion(java.util.Date fecha_finalizacion) {
        if (fecha_finalizacion==null || fecha_finalizacion instanceof LocalDate) 
            this.fecha_finalizacion = fecha_finalizacion;
        else this.fecha_finalizacion = new LocalDate(fecha_finalizacion);
    }
    /**
     * Holds value of property prof_desc_cadivi.
     */
    private boolean prof_desc_cadivi;

    /**
     * Getter for property prof_desc_cadivi.
     * @return Value of property prof_desc_cadivi.
     */
    public boolean getProf_desc_cadivi() {
        return this.prof_desc_cadivi;
    }

    /**
     * Setter for property prof_desc_cadivi.
     * @param prof_desc_cadivi New value of property prof_desc_cadivi.
     */
    public void setProf_desc_cadivi(boolean prof_desc_cadivi) {
        this.prof_desc_cadivi = prof_desc_cadivi;
    }
    /**
     * Holds value of property observaciones.
     */
    private Set<Observacion_Pas> observaciones = new HashSet<Observacion_Pas>();

    /**
     * Getter for property observaciones.
     * @return Value of property observaciones.
     */
    public Set<Observacion_Pas> getObservaciones() {
        return this.observaciones;
    }

    /**
     * Setter for property observaciones.
     * @param observaciones New value of property observaciones.
     */
    public void setObservaciones(Set<Observacion_Pas> observaciones) {
        this.observaciones = observaciones;
    }

    /**
     * Add an element to set property observaciones
     * and sets elements's property pas.
     * @param element New element to be added to observaciones.
     */
    public void addToObservaciones(Observacion_Pas element) {
        element.setPas(this);
        observaciones.add(element);
    }

    /**
     * Removes and old element from set observaciones 
     * and sets element's property pas to null.
     * @param old The element to be removed from observaciones
     */
    public void removeFromObservaciones(Observacion_Pas old) {
        observaciones.remove(old);
        old.setPas(null);
    }
    /**
     * Holds value of property profesor.
     */
    private Profesor profesor;

    /**
     * Getter for property profesor.
     * @return Value of property profesor.
     */
    public Profesor getProfesor() {
        return this.profesor;
    }

    /**
     * Setter for property profesor.
     * @param profesor New value of property profesor.
     */
    public void setProfesor(Profesor profesor) {
        this.profesor = profesor;
    }
    /**
     * Holds value of property montos.
     */
    private Set<Monto> montos = new HashSet<Monto>();

    /**
     * Getter for property montos.
     * @return Value of property montos.
     */
    public Set<Monto> getMontos() {
        return this.montos;
    }

    /**
     * Setter for property montos.
     * @param montos New value of property montos.
     */
    public void setMontos(Set<Monto> montos) {
        this.montos = montos;
    }

    /**
     * Add an element to set property montos
     * and sets elements's property pas.
     * @param element New element to be added to montos.
     */
    public void addToMontos(Monto element) {
        element.setPas(this);
        montos.add(element);
    }

    /**
     * Removes and old element from set montos 
     * and sets element's property pas to null.
     * @param old The element to be removed from montos
     */
    public void removeFromMontos(Monto old) {
        montos.remove(old);
        old.setPas(null);
    }
    /**
     * Holds value of property universidad.
     */
    private String universidad = "";

    /**
     * Getter for property universidad.
     * @return Value of property universidad.
     */
    public String getUniversidad() {
        return this.universidad;
    }

    /**
     * Setter for property universidad.
     * @param universidad New value of property universidad.
     */
    public void setUniversidad(String universidad) {
        this.universidad = universidad;
    }
    /**
     * Holds value of property pais.
     */
    private String pais = "";

    /**
     * Getter for property pais.
     * @return Value of property pais.
     */
    public String getPais() {
        return this.pais;
    }

    /**
     * Setter for property pais.
     * @param pais New value of property pais.
     */
    public void setPais(String pais) {
        this.pais = pais;
    }



    public String toString() {
        return "<Pas id='C" + this.id +
        //idPas
        "\" fecha_inicio =\"" + fecha_inicio +
        "\" fecha_finalizacion =\"" + fecha_finalizacion +
        "\" prof_desc_cadivi =\"" + prof_desc_cadivi +
        //observaciones
        ((profesor==null) ? "" : "\" profesor =\"C" + profesor.getId()) +
        //montos
        "\" universidad =\"" + universidad +
        "\" pais =\"" + pais +
        "'/>";
    }

}